/**
 * 什么是https
 * https是计算机网络进行安全通信的传输协议，
 * 经由http进行通信，利用SSL/LTS建立安全信道，加密数据包。
 */

/**
 * http特点
 * 1、无状态：协议对客户端没有状态存储，对事务处理没有‘记忆’功能
 * 2、无连接：每一次请求结束后会断开连接
 * 3、简单快速，灵活
 * 4、不安全，数据丢失，篡改
 *
 * https特点
 * 1、内容加密：采用加密技术，中间者无法看到明文内容
 * 2、验证身份：通过证书认证客户端访问的是自己的服务器
 * 3、保护数据完整性，防止冒充和篡改
 */

/**
 * 1、client向server发送请求https://baidu.com，然后连接到server的443端口，发送的信息主要是随机值1和客户端支持的加密算法。
 * 2、server接收到信息之后给予client响应握手信息，包括随机值2和匹配好的协商加密算法，这个加密算法一定是client发送给server加密算法的子集。
 * 3、随即server给client发送第二个响应报文是数字证书。服务端必须要有一套数字证书，可以自己制作，也可以向组织申请。
 * 区别就是自己颁发的证书需要客户端验证通过，才可以继续访问，而使用受信任的公司申请的证书则不会弹出提示页面，这套证书其实就是一对公钥和私钥。
 * 传送证书，这个证书其实就是公钥，只是包含了很多信息，如证书的颁发机构，过期时* 间、服务端的公钥，第三方证书认证机构(CA)的签名，服务端的域名信息等内容。
 * 4、客户端解析证书，这部分工作是由客户端的TLS来完成的，首先会验证公钥是否有效，比如颁发机构，过期时间等等，如果发现异常，则会弹出一个警告框，提示证书存在问题。
 * 如果证书没有问题，那么就生成一个随即值（预主秘钥）。
 * 5、客户端认证证书通过之后，接下来是通过随机值1、随机值2和预主秘钥组装会话秘钥。然后通过证书的公钥加密会话秘钥。
 * 6、传送加密信息，这部分传送的是用证书加密后的会话秘钥，目的就是让服务端使用秘钥解密得到随机值1、随机值2和预主秘钥。
 * 7、服务端解密得到随机值1、随机值2和预主秘钥，然后组装会话秘钥，跟客户端会话秘钥相同。
 * 8、客户端通过会话秘钥加密一条消息发送给服务端，主要验证服务端是否正常接受客户端加密的消息。
 * 9、同样服务端也会通过会话秘钥加密一条消息回传给客户端，如果客户端能够正常接受的话表明SSL层连接建立完成了。
 */

/**
 * 简要版SSL连接
 * 1、client -> 访问https://xxxx -> 443端口 -> server
 * 2、server -> 返回证书，里面有公钥 -> client
 * 3、client -> 检验证书
 * 4、client -> 检验成功，用server.公钥加密了一个随机秘钥 -> server
 * 5、server -> 利用server.私钥解密随机秘钥
 * 6、client -> 发送消息 -> server
 * 7、server -> 发送消息 -> client
 * 8、成功
 */

/**
 * 缺点：
 * 1、SSL证书需要购买申请，功能越强大的证书费用越高
 * 2、SSL证书通常需要绑定IP，不能在同一IP上绑定多个域名，IPv4资源不可能支撑这个消耗。
 * 3、使用HTTPS协议会使页面的加载时间延长近50%，增加10%到20%的耗电。
 * 4、HTTPS连接缓存不如HTTP高效，流量成本高。
 * 5、HTTPS连接服务器端资源占用高很多，支持访客多的网站需要投入更大的成本。
 * 6、HTTPS协议握手阶段比较费时，对网站的响应速度有影响，影响用户体验。比较好的方式是采用分而治之，类似12306网站的主页使用HTTP协议，有关于用户信息等方面使用HTTPS。
 */